package com.rede.didiok.common.dto.community;

import java.util.Date;
import java.util.List;
import java.util.Map;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.rede.didiok.common.dto.BaseDto;
import com.rede.didiok.common.dto.user.UserDto;
import com.rede.didiok.common.validator.annotion.NotBlank;
import com.rede.didiok.common.validator.group.GetList;
import com.rede.didiok.common.validator.group.Insert;

/**
 * 用户动态评价表
 * 
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-07-20 22:09:24
 */
@Data
public class MomentCommentDto extends BaseDto<MomentCommentDto> {
	/**
	 * 创建人uid
	 */
	private String createUserUid;
	/**
	 * 创建人名称
	 */
	private String createUserName;
	/**
	 * 回复某条评论的uid
	 */
	private String toUid;
	/**
	 * 回复某个人的uid
	 */
	private String toUserUid;
	/**
	 * 评论内容
	 */
	@NotBlank(groups = {Insert.class})
	private String content;
	/**
	 * 用户动态uid
	 */
	private String momentUid;
	/**
	 * 用户动态名称
	 */
	private String momentName;
	/**
	 * 创建时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date createTime;
	/**
	 * 更新时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date updateTime;
	/**
	 * 评论类型 1:点赞 0:评论
	 */
	private Integer type;
	/**
	 * 一级评论UID
	 */
	private String firstCommentUid;
	/**
	 * 审批状态【0：待审批，1：审核未通过，2：审核通过】
	 */
	private Integer auditStatus;
	/**
	 * 审批人
	 */
	private String auditName;
	/**
	 * 审批拒绝原因
	 */
	private String rejectReason;

	/**
	 * 用户名
	 */
	private String userName;

	/**
	 * 业务uid
	 */
	private List<String> businessUidList;

	/**
	 * 评论来源： MESSAGE_BOARD，ABOUT，BLOG_INFO 等
	 */
	@NotBlank(groups = {Insert.class, GetList.class})
	private String source;


	/**
	 * 审核时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date auditTime;

	/**
	 * 是否前台通知 【0 前台 ，1 后台】
	 */
	private Integer isBack;

	/**
	 * 开启二级模式
	 */
	private boolean openSecondLevel;



	/**
	 * 本条评论是哪个用户说的
	 */
	@TableField(exist = false)
	private UserDto user;


	/**
	 * 被回复的用户名
	 */
	@TableField(exist = false)
	private String toUserName;


	/**
	 * 本条评论对哪个用户说的，如果没有则为一级评论
	 */
	@TableField(exist = false)
	private UserDto toUser;

	/**
	 * 本条评论下的回复
	 */
	@TableField(exist = false)
	private List<MomentCommentDto> replyList;

	/**
	 * 本条评论回复的那条评论
	 */
	@TableField(exist = false)
	private MomentCommentDto toComment;

	/**
	 * 评论来源名称
	 */
	@TableField(exist = false)
	private String sourceName;

	/**
	 * 点赞相关信息
	 */
	private Map<String, Object> praiseInfo;

	/**
	 * 收藏相关信息
	 */
	private Map<String, Object> collectInfo;

	/**
	 * OrderBy排序字段
	 */
	private String orderBy;
}
